Enable and fix warnings during the build. Although CMake adds warning flags, they are ignored in the libc++ headers because the headers '#pragma system header' themselves. This patch disables the system header pragma when building libc++ and fixes the warnings that arose. The warnings fixed were: 1. <memory> - anonymous structs are a GNU extension 2. <functional> - anonymous structs are a GNU extension. 3. <__hash_table> - Embedded preprocessor directives have undefined behavior. 4. <string> - Definition is missing noexcept from declaration. 5. <__std_stream> - Unused variable. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@242623 91177308-0d34-0410-b5e6-96231b3b80d8 
diff --git a/include/__hash_table b/include/__hash_table index f3a2030..ec20e10 100644 --- a/include/__hash_table +++ b/include/__hash_table 
@@ -984,15 +984,17 @@  __equal_range_multi(const _Key& __k) const;    void swap(__hash_table& __u) +#if _LIBCPP_STD_VER <= 11  _NOEXCEPT_(  __is_nothrow_swappable<hasher>::value && __is_nothrow_swappable<key_equal>::value -#if _LIBCPP_STD_VER <= 11  && (!allocator_traits<__pointer_allocator>::propagate_on_container_swap::value  || __is_nothrow_swappable<__pointer_allocator>::value)  && (!__node_traits::propagate_on_container_swap::value  || __is_nothrow_swappable<__node_allocator>::value) -#endif  ); +#else + _NOEXCEPT_(__is_nothrow_swappable<hasher>::value && __is_nothrow_swappable<key_equal>::value); +#endif    _LIBCPP_INLINE_VISIBILITY  size_type max_bucket_count() const _NOEXCEPT @@ -2351,15 +2353,17 @@  template <class _Tp, class _Hash, class _Equal, class _Alloc>  void  __hash_table<_Tp, _Hash, _Equal, _Alloc>::swap(__hash_table& __u) +#if _LIBCPP_STD_VER <= 11  _NOEXCEPT_(  __is_nothrow_swappable<hasher>::value && __is_nothrow_swappable<key_equal>::value -#if _LIBCPP_STD_VER <= 11  && (!allocator_traits<__pointer_allocator>::propagate_on_container_swap::value  || __is_nothrow_swappable<__pointer_allocator>::value)  && (!__node_traits::propagate_on_container_swap::value  || __is_nothrow_swappable<__node_allocator>::value) -#endif  ) +#else + _NOEXCEPT_(__is_nothrow_swappable<hasher>::value && __is_nothrow_swappable<key_equal>::value) +#endif  {  {  __node_pointer_pointer __npp = __bucket_list_.release(); 
diff --git a/include/__std_stream b/include/__std_stream index 5403ada..f867cd2 100644 --- a/include/__std_stream +++ b/include/__std_stream 
@@ -276,7 +276,6 @@  codecvt_base::result __r;  char_type* pbase = &__1buf;  char_type* pptr = pbase + 1; - char_type* epptr = pptr;  do  {  const char_type* __e; 
diff --git a/include/functional b/include/functional index 5ee9417..9bed783 100644 --- a/include/functional +++ b/include/functional 
@@ -2402,14 +2402,14 @@  size_t __b;  size_t __c;  size_t __d; - }; + } __s;  } __u; - __u.__a = 0; - __u.__b = 0; - __u.__c = 0; - __u.__d = 0; + __u.__s.__a = 0; + __u.__s.__b = 0; + __u.__s.__c = 0; + __u.__s.__d = 0;  __u.__t = __v; - return __u.__a ^ __u.__b ^ __u.__c ^ __u.__d; + return __u.__s.__a ^ __u.__s.__b ^ __u.__s.__c ^ __u.__s.__d;  #elif defined(__x86_64__)  // Zero out padding bits  union @@ -2419,12 +2419,12 @@  {  size_t __a;  size_t __b; - }; + } __s;  } __u; - __u.__a = 0; - __u.__b = 0; + __u.__s.__a = 0; + __u.__s.__b = 0;  __u.__t = __v; - return __u.__a ^ __u.__b; + return __u.__s.__a ^ __u.__s.__b;  #else  return __scalar_hash<long double>::operator()(__v);  #endif 
diff --git a/include/memory b/include/memory index 22311aa..df35a07 100644 --- a/include/memory +++ b/include/memory 
@@ -3420,7 +3420,7 @@  {  size_t __a;  size_t __b; - }; + } __s;  } __u;  __u.__t = __v;  return __murmur2_or_cityhash<size_t>()(&__u, sizeof(__u)); @@ -3442,7 +3442,7 @@  size_t __a;  size_t __b;  size_t __c; - }; + } __s;  } __u;  __u.__t = __v;  return __murmur2_or_cityhash<size_t>()(&__u, sizeof(__u)); @@ -3465,7 +3465,7 @@  size_t __b;  size_t __c;  size_t __d; - }; + } __s;  } __u;  __u.__t = __v;  return __murmur2_or_cityhash<size_t>()(&__u, sizeof(__u)); 
diff --git a/include/string b/include/string index 6be2195..5777ee2 100644 --- a/include/string +++ b/include/string 
@@ -1936,7 +1936,12 @@  template <class _CharT, class _Traits, class _Allocator>  inline _LIBCPP_INLINE_VISIBILITY  basic_string<_CharT, _Traits, _Allocator>::basic_string(const allocator_type& __a) - : __r_(__a) +#if _LIBCPP_STD_VER <= 14 + _NOEXCEPT_(is_nothrow_copy_constructible<allocator_type>::value) +#else + _NOEXCEPT +#endif +: __r_(__a)  {  #if _LIBCPP_DEBUG_LEVEL >= 2  __get_db()->__insert_c(this);